package org.nf.servlet;

import com.google.gson.Gson;
import org.nf.dao.StaffsDao;
import org.nf.dao.impl.StaffsDaoImpl;
import org.nf.entity.Staffs;
import org.nf.util.GsonUtil;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

/**
 * 查看所有员工 - Servlet程序 - 服务器端程序
 * 第一：定义一个类，继承 HttpServlet - 依赖 Tomcat
 * 第二：重写 doXxx 方法 ，实现处理客户端浏览器发起的 Xxx 请求
 * 第三：在 doXxx 方法中，编写具体代码，实现具体的业务逻辑（功能）
 * 第四：配置请求 URL ，暴露服务端程序的访问地址
 *
 * @author zhu
 * @date 2024-03-11
 */
@WebServlet("/listAll")
public class ListAllStaffServlet extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 第三：编写具体代码，实现具体的业务逻辑（功能） - 把对象(list)序列化为 JSON 字符串返回
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("application/json;charset=utf-8");

        // 实例化 DAO 对象，查询数据库数据
        StaffsDao staffDao = new StaffsDaoImpl();
        int currentPage = 1;
        int pageSize = 2;
        Staffs staffs = new Staffs();
        List<Staffs> list = staffDao.selectByPage(staffs,currentPage,pageSize);

        // 实例化 Gson 对象，把对象序列化为 JSON 字符串
        // Gson gson = new Gson();
        // String json = gson.toJson(list);
        String json = GsonUtil.toJson(list);
        System.out.println(json);

        // 实例化 PrintWriter 对象，把数据响应到客户端浏览器中
        PrintWriter out = resp.getWriter();
        out.print(json);
        out.flush();
        out.close();
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}
